import ProductItem from '@/model/productItem';
import cartItem from "@/model/cartItem";

class CartAction {

    items: Array<cartItem> = [];
    checkoutStatus: any = null;

    // 接收商品id，完成添加商品到购物车
    public pushProductToCart(item: cartItem) {
        this.items.push(item);
    }
    // 接收商品id，完成购物车商品数量+1
    incrementItemQuantity(id: number) {
        // 根据 id，找出对应的 item 记录  
        const cartItem = this.items.find(item => item.id === id);
        // 购买数量+1
        if (cartItem) {
            cartItem.quantity++;
        }

    }
    //全量更新购物车商品
    setCartItems(items: Array<cartItem>) {
        this.items = items
    }
    //更新购物车购买状态
    setCheckoutStatus(status: string) {
        this.checkoutStatus = status
    }
    //添加商品
    addProductToCart(product: ProductItem) {
        // 重制购物车状态
        this.setCheckoutStatus(" ")
        if (product.inventory <= 0) {
            // 如果商品库存没有了则不用继续执行了，直接返回
            return;
        }
        //查找购物车商品
        const cartItem = this.items.find(item => item.id === product.id);
        // 判断购物车里没有商品，则执行添加商品，否则执行添加数量
        if (!cartItem) {
            this.pushProductToCart({ id: product.id, quantity: 1 })
        } else {
            this.incrementItemQuantity(cartItem.id);
        }
        // 执行商品的库存减法，确保商品不会超卖 
        //commit("ProductionAction/decrementProductInventoyr", product.id);
        //state.ProductionAction.decrementProductInventoyr(product.Id)
        //这边要怎么调用ProductionAction 的decrementProductInventory方法？
    }
    //组装 cartProduct
    // getcartProducts(store:Store<any>): Array<cartProduct> {
    //     console.log(store);
    //     return store.state.CartAction.items.map((id: number, quantity: number) => {
    //         const product = store.state.ProductionAction.products.find((p: ProductItem) => p.id === id);
    //         console.log(product,"getCartProduct");
    //         return {
    //             id,
    //             title: product.title,
    //             price: product.price,
    //             quantity
    //         }
    //     });
    // }
    //计算总价
    // get TotalPrice(): number {
    //     let total: number = 0;
    //     this.getcartProducts().forEach((cp: cartProduct) => {
    //         total += cp.price * cp.quantity;
    //     })
    //     return total;
    // }
    //结算

}
export default CartAction